require "class.lua"
require "constantes.lua"

objetoMovel = class:new()

function objetoMovel:init(nome,posicaoX,posicaoY,largura,altura,massa,torque,tipoTextura)		
	self.nome = nome
	self.image = TEXTURA_FERRO
	self.posicaoX = posicaoX
	self.posicaoY = posicaoY
	self.altura = altura
	self.largura = largura
	self.tipoTextura = tipoTextura
	self.body = love.physics.newBody(world, posicaoX, posicaoY,massa,torque)	
	self.shape = love.physics.newRectangleShape(self.body,0,0, largura, altura,0)
	self.textura = love.graphics.newQuad(0, 0, largura, altura, largura, altura)
	self.shape:setData( self.nome )
end

function objetoMovel:getBody()
	return self.body
end

function objetoMovel:getNome()
	return self.nome
end

function objetoMovel:trataColisao()
end

function objetoMovel:setColData(Data)
	return self.shape:setData(Data)
end

function objetoMovel:getTextura()
	return self.tipoTextura
end

function objetoMovel:setImage(imageN)
	self.image = imageN
end

function objetoMovel:getLargura()
	return self.largura
end

function objetoMovel:getAltura()
	return self.altura
end

function objetoMovel:destroi()
	self.shape:destroy()
	self.body:destroy()
end

function objetoMovel:draw()
    alpha = self.body:getAngle()
	xnovo = 0
	ynovo = 0
    xnovo = (self.posicaoX - posicaoCamera)*math.cos(alpha)+self.posicaoY*math.sin(alpha)
    ynovo = -(self.posicaoX - posicaoCamera)*math.sin(alpha)+self.posicaoY*math.cos(alpha)
    love.graphics.rotate(alpha)   
    love.graphics.drawq(self.image, self.textura, xnovo-(self.largura/2), ynovo-(self.altura/2) )
	love.graphics.rotate(-alpha)
end

function objetoMovel:update()
	self.posicaoX = self.body:getX();
	self.posicaoY = self.body:getY();
end

function objetoMovel:clique(x,y)
	if( math.abs(self.body:getX() - x)< self.largura/2) and ( math.abs(self.body:getY() - y) < self.altura/2)  then
		return true
	else
		return false
	end
end

--verifica se o objeto a ser inserido sobrepoe esse
function objetoMovel:sobreposicao(x,y,l,a)
	if( math.abs(self.body:getX() - x)< (self.largura/2+l/2) ) and ( math.abs(self.body:getY() - y) < (self.altura/2+a/2))  then
		return true
	else
		return false
	end
end
